package main

import (
	"fmt"
)

func main() {
	f7()
	f9 := f7             //函数本身就是一个变量
	fmt.Printf("%T", f7) // 也可以是一个类型
	f9()

	//匿名函数
	f5 := func() {
		fmt.Println("我是f5匿名函数")
	}
	f5()

	fmt.Println("=================")

	//匿名函数自己调用自己  在函数的末尾加上一个括号
	func() {
		fmt.Println("我匿名自己调用自己")
	}()
	fmt.Println("===================")
	//匿名函数也是可以传入参数的
	func(a, b int) {
		fmt.Println("我匿名函数可以传参数")
		fmt.Println(a, b)

	}(2, 5)

	//当然也可以有返回值  不会在函数的前面要有一个变量来接住
	sum := func(a, b int) int {
		fmt.Println("我匿名函数可以传参数，也有返回值")
		return a + b
	}(2, 5)
	fmt.Println(sum)
}
func f7() {
	fmt.Println("我是f7函数")
}
